1109. 航班预订统计

1109. 航班预订统计

这里有 n 个航班,它们分别从 1 到 n 进行编号。

我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [i, j, k] 意味着我们在从 i 到 j 的每个航班上预订了 k 个座位。

请你返回一个长度为 n 的数组 answer,按航班编号顺序返回每个航班上预订的座位数。

示例:

输入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5

输出:[10,55,45,25,25]

提示:

1 <= bookings.length <= 20000

1 <= bookings[i][0] <= bookings[i][1] <= n <= 20000

1 <= bookings[i][2] <= 10000


思路:一般结题的思路应该是依次按照数组的规定,按照行分别去累加和来求解,但是我尝试了一下是不行的,超出时间限制(用例给的很大不能通过),参考题解才知道了怎么做

优化思路:这题可以了解一下前缀和概念,简单说一下就是比如数组[5,6,7,8]如果经过m次搜索,每次去查找l位置与r位置中的和,常规求解都是On^2,如果利用前缀和的思路可以做到线性求解,就是算出数组的sum数组[5,11,18,26],比如我想要知道1、2位置的和13(6+7)我只有拿18-5即可,详情可以百度前缀和

提交记录